home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / webx / jpged26s.lzh / PutBlock.s < prev    next >
Encoding:
Text File  |  1996-04-21  |  4.8 KB  |  313 lines

  1. *
  2. *
  3. *       PutBlock.S
  4. *
  5. include  DOSCALL.MAC
  6. include  JPEG.MAC
  7. include  work.inc
  8. *
  9.     .text
  10. *
  11.     .xref    DCT
  12.     .xref    ENCODE,VRAM_to_YUV,VRAM_to_YUV2,VRAM_to_YUV4
  13.     .xref    Read_error
  14. *
  15. *
  16. *
  17. *
  18. *  âJâëü[Åoù═
  19. *
  20. *    d6.w:i  ÄcéΦé╠╫▓▌Éö
  21. *    a5.l:i  VRAM
  22. *
  23. .xdef    PutBlock
  24. PutBlock
  25.     *▄░╕┤╪▒Åëè·ë╗
  26.     *--------------------------
  27.     clr.w    -(sp)
  28.     move.l    Scroll_Area(a6),a0
  29.     adda.l    lx(a6),a0
  30.     pea.l    (a0)
  31.     move.l    Scroll_Area(a6),a0
  32.     pea.l    (a0)
  33.  
  34.     *VRAM├▐░└ĵéΦì₧é▌
  35.     *--------------------------
  36.     btst.b    #5,Sys_flag2(a6)
  37.     beq    GetVRAM
  38.  
  39.     *╠º▓┘é╠VRAM├▐░└ĵéΦì₧é▌
  40.     *--------------------------
  41.     move.w    DeltaY(a6),d4
  42.     subq.w    #1,d4
  43. GetF10
  44.     clr.w    -(sp)
  45.     move.l    a5,-(sp)
  46.     move.w    VShandle(a6),-(sp)
  47.     dos    _SEEK
  48.     addq.w    #2+4+2,sp
  49.  
  50.     moveq.l    #0,d7
  51.     move.w    Xline(a6),d7
  52.     add.l    d7,d7
  53.     move.l    d7,-(sp)
  54.     move.l    a0,-(sp)
  55.     move.w    VShandle(a6),-(sp)
  56.     dos    _READ
  57.     lea.l    4+4+2(sp),sp
  58.     tst.l    d0
  59.     bmi    Read_error
  60.     cmp.l    d0,d7
  61.     bne    Read_error
  62.  
  63.     adda.l    VSXbyte(a6),a5
  64.     moveq.l    #0,d7
  65.     move.w    Xline(a6),d7
  66.     adda.w    d7,a0
  67.     adda.w    d7,a0
  68.     move.w    DeltaX(a6),d0
  69.     divu.w    d0,d7
  70.     swap.w    d7
  71.     tst.w    d7
  72.     beq    GetF40
  73.     movea.l    a0,a1
  74.     sub.w   d7,d0
  75.     sub.w    d7,a1
  76.     sub.w    d7,a1
  77.  
  78.     subq.w    #1,d0
  79. GetF30
  80.     move.w    (a1)+,(a0)+
  81.     dbra    d0,GetF30
  82. GetF40
  83.     subq.w    #1,d6
  84.     dbeq    d4,GetF10
  85.     bne    GetV70
  86.     subq.w    #1,d4
  87.     bcs    GetV70
  88.     bra    GetV45
  89.  
  90.     *╥╙╪é╠VRAM├▐░└ĵéΦì₧é▌
  91.     *--------------------------
  92. GetVRAM
  93.     move.w    DeltaY(a6),d4
  94.     subq.w    #1,d4
  95. GetV10
  96.     move.l    a5,a4
  97.     move.w    Xline(a6),d7
  98.     subq.w    #1,d7
  99. GetV20
  100.     move.w    (a4)+,(a0)+
  101.     dbra    d7,GetV20
  102.     adda.l    VSXbyte(a6),a5
  103.     moveq.l    #0,d7
  104.     move.w    Xline(a6),d7
  105.     move.w    DeltaX(a6),d0
  106.     divu.w    d0,d7
  107.     swap.w    d7
  108.     tst.w    d7
  109.     beq    GetV40
  110.     movea.l    a0,a1
  111.     sub.w   d7,d0
  112.     sub.w    d7,a1
  113.     sub.w    d7,a1
  114.  
  115.     subq.w    #1,d0
  116. GetV30
  117.     move.w    (a1)+,(a0)+
  118.     dbra    d0,GetV30
  119. GetV40
  120.  
  121.     subq.w    #1,d6
  122.     dbeq    d4,GetV10
  123.     bne    GetV70
  124.     subq.w    #1,d4
  125.     bcs    GetV70
  126.  
  127. GetV45
  128.     move.l    Scroll_Area(a6),a1
  129.  
  130. GetV50
  131.     move.w    BlkX(a6),d0
  132.     subq.w    #1,d0
  133. GetV60
  134.     move.l    (a1)+,(a0)+
  135.     move.l    (a1)+,(a0)+
  136.     move.l    (a1)+,(a0)+
  137.     move.l    (a1)+,(a0)+
  138.     dbra    d0,GetV60
  139.     dbra    d4,GetV50
  140. GetV70
  141.  
  142.     *ò█æ╢
  143.     *--------------------------
  144. putb20
  145.  
  146.   cmp.b   #1,uvmode(a6)
  147.   beq     putb1
  148.   cmp.b   #2,uvmode(a6)
  149.   beq     putb2
  150.  
  151. *
  152. * ÉFæèɼò¬éPü^éSé╠ÅΩìç
  153. *
  154. *  æµéPüEéQâuâìâbâNé╠ô╟ì₧
  155. *-------------------
  156.     move.l    (sp),a0
  157.     lea.l    Eydata1(a6),a1
  158.     lea.l    Eudata1(a6),a2
  159.     lea.l    Evdata1(a6),a3
  160.     bsr    VRAM_to_YUV4
  161.     add.l    #16*2,(sp)
  162. *
  163. *  æµéRüEéSâuâìâbâNé╠ô╟ì₧
  164. *--------------------
  165.     move.l    4(sp),a0
  166.     lea.l    Eydata3(a6),a1
  167.     lea.l    Eudata1+8*4*4(a6),a2
  168.     lea.l    Evdata1+8*4*4(a6),a3
  169.     bsr    VRAM_to_YUV4
  170.     add.l    #16*2,4(sp)
  171. *
  172.     lea.l    Eydata1+8*8*4(a6),a4
  173.     bsr    DCT
  174.     lea.l    Eydata2+8*8*4(a6),a4
  175.     bsr    DCT
  176.     lea.l    Eydata3+8*8*4(a6),a4
  177.     bsr    DCT
  178.     lea.l    Eydata4+8*8*4(a6),a4
  179.     bsr    DCT
  180. *
  181.     lea.l    Eydata1(a6),a0
  182.     lea.l    preDC(a6),a1
  183.     lea.l    DCLtable(a6),a2
  184.     lea.l    QtableL(a6),a5
  185.     bsr    ENCODE
  186.     tst.l    d0
  187.     bmi    putb90
  188. *
  189.     lea.l    Eydata2(a6),a0
  190.     lea.l    preDC(a6),a1
  191.     lea.l    DCLtable(a6),a2
  192.     lea.l    QtableL(a6),a5
  193.     bsr    ENCODE
  194.     tst.l    d0
  195.     bmi    putb90
  196. *
  197.     lea.l    Eydata3(a6),a0
  198.     lea.l    preDC(a6),a1
  199.     lea.l    DCLtable(a6),a2
  200.     lea.l    QtableL(a6),a5
  201.     bsr    ENCODE
  202.     tst.l    d0
  203.     bmi    putb90
  204. *
  205.     lea.l    Eydata4(a6),a0
  206.     lea.l    preDC(a6),a1
  207.     lea.l    DCLtable(a6),a2
  208.     lea.l    QtableL(a6),a5
  209.     bsr    ENCODE
  210.     tst.l    d0
  211.     bpl    putb60
  212.     bra    putb90
  213. *
  214. * ÉFæèɼò¬éPü^éQé╠ÅΩìç
  215. *
  216. putb2
  217. *  æµéPüEéQâuâìâbâNé╠ô╟ì₧
  218. *-------------------
  219.     move.l    (sp),a0
  220.     lea.l    Eydata1(a6),a1
  221.     lea.l    Eudata1(a6),a2
  222.     lea.l    Evdata1(a6),a3
  223.     bsr    VRAM_to_YUV2
  224.     add.l    #16*2,(sp)
  225. *
  226.     lea.l    Eydata1+8*8*4(a6),a4
  227.     bsr    DCT
  228.     lea.l    Eydata2+8*8*4(a6),a4
  229.     bsr    DCT
  230. *
  231.     lea.l    Eydata1(a6),a0
  232.     lea.l    preDC(a6),a1
  233.     lea.l    DCLtable(a6),a2
  234.     lea.l    QtableL(a6),a5
  235.     bsr    ENCODE
  236.     tst.l    d0
  237.     bmi    putb90
  238. *
  239.     lea.l    Eydata2(a6),a0
  240.     lea.l    preDC(a6),a1
  241.     lea.l    DCLtable(a6),a2
  242.     lea.l    QtableL(a6),a5
  243.     bsr    ENCODE
  244.     tst.l    d0
  245.     bpl    putb60
  246.     bra    putb90
  247. *
  248. * ÉFæèɼò¬éPü^éPé╠ÅΩìç
  249. *
  250. putb1
  251. *  æµéPâuâìâbâNé╠ô╟ì₧
  252. *-------------------
  253.     move.l    (sp),a0
  254.     lea.l    Eydata1(a6),a1
  255.     lea.l    Eudata1(a6),a2
  256.     lea.l    Evdata1(a6),a3
  257.     bsr    VRAM_to_YUV
  258.     add.l    #8*2,(sp)
  259. *
  260.     lea.l    Eydata1+8*8*4(a6),a4
  261.     bsr    DCT
  262. *
  263.     lea.l    Eydata1(a6),a0
  264.     lea.l    preDC(a6),a1
  265.     lea.l    DCLtable(a6),a2
  266.     lea.l    QtableL(a6),a5
  267.     bsr    ENCODE
  268.     tst.l    d0
  269.     bmi    putb90
  270.  
  271.     tst.b    colormode(a6)
  272.     bnz    putb80        *╙╔╕█ëµæ£é┼éáéΘé╠é┼ÉFì╖ÉMìåé═Åêù¥é╡é╚éó
  273. *
  274. *  ÉFì╖ÉMìåé╠Åêù¥
  275. *
  276. putb60
  277.  
  278.     lea.l    Eudata1+8*8*4(a6),a4
  279.     bsr    DCT
  280. *
  281.     lea.l    Evdata1+8*8*4(a6),a4
  282.     bsr    DCT
  283. *
  284.     lea.l    Eudata1(a6),a0
  285.     lea.l    preDC+2(a6),a1
  286.     lea.l    DCCtable(a6),a2
  287.     lea.l    QtableC(a6),a5
  288.     bsr    ENCODE
  289.     tst.l    d0
  290.     bmi    putb90
  291. *
  292.     lea.l    Evdata1(a6),a0
  293.     lea.l    preDC+4(a6),a1
  294.     lea.l    DCCtable(a6),a2
  295.     lea.l    QtableC(a6),a5
  296.     bsr    ENCODE
  297.     tst.l    d0
  298.     bmi    putb90
  299. *
  300. putb80
  301.     move.w    8(sp),d0
  302.     add.w    DeltaX(a6),d0
  303.     move.w    d0,8(sp)
  304.     cmp.w    Xline(a6),d0
  305.     bcs    putb20
  306.     moveq.l    #0,d0
  307. putb85
  308.     lea.l    4+4+2(sp),sp
  309.     rts
  310. putb90
  311.     moveq.l    #-1,d0
  312.     bra    putb85
  313.